home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Libris Britannia 4
/
science library(b).zip
/
science library(b)
/
PROGRAMM
/
PASCAL
/
1874.ZIP
/
T-TOOLS.ZIP
/
CRT2DEMO.PAS
< prev
next >
Wrap
Pascal/Delphi Source File
|
1989-12-19
|
6KB
|
167 lines
{-----------------------------------------------------------------------------}
{ Turbo Tools }
{ version 1.0 }
{ for Turbo Pascal 4.0, 5.0 and 5.5 }
{ Chuck Esterbrook }
{ copyright 1989 }
{ }
{ See TOOLDOC.ASC for instructions }
{ }
{ program Crt2Demo }
{ }
{-----------------------------------------------------------------------------}
{
program Crt2Demo - demonstration program for the Crt2 and Keys units
procedure InitScr - initialize the crt
procedure NewWindow - create a random window with random colors
procedure RandomChars - generate random characters until a key is pressed
procedure RunWindows - get keyboard input and follow commands
}
program Crt2Demo;
uses
crt,
Crt2,
Keys;
procedure InitScr;
begin
randomize;
if CanUseColor then begin
textmode(co80); { CHANGE TO 80x25/COLOR }
textmode(co80 + font8x8); { TRY CHANGING TO EXTRA LINE MODE }
{ FOR EGA AND VGA ADAPTERS }
textattr := white + blue*16;
end { if }
else
textattr := lightgray + black*16;
clrscr;
gotoxy(1,2);
writeln(Center('Turbo Tools 1.0 * for Turbo Pascal * copyright 1989 * Chuck Esterbrook'));
Frame(1,1, 80,3, 1,1,1,1);
gotoxy(1,5);
writeln(Center('demonstration program for unit Crt2'));
writeln;
writeln(Center('Ins=Toggle Insert Del=Delete Char Ctrl-Del=Delete Line'));
writeln(Center('Alt-W=Window Alt-R=Random ESCAPE=Quit Program'));
writeln(Center(#24#25#26#27+' HOME END PAGEUP PAGEDOWN CTR=Move Cursor'));
end; { InitScr }
procedure NewWindow;
var
x1,y1,x2,y2,Width,Height : byte;
begin
x1 := random(70)+1; { GET UPPER LEFT HAND CORNER }
y1 := random(ScrLength-14)+11;
Width := random(71)+5; { GET WIDTH AND HEIGHT }
Height := random(ScrLength-21)+5;
x2 := x1 + Width; { DETERMINE LOWER RIGHT HAND CORNER }
y2 := y1 + Height;
if x2>80 then x2 := 80; { IF LOWER RIGHT OUT OF BOUNDS PUT }
if y2>ScrLength then y2 := ScrLength; { BACK INTO SCREEEN }
window(1,1,80,ScrLength);
Frame(x1,y1,x2,y2, 2,2,2,2);
window(x1+1,y1+1,x2-1,y2-1);
if CanUseColor then
textattr := random(7)+9 + random(8)*16
else
case random(4) of
0 : textattr := lightgray + black*16;
1 : textattr := white + black*16;
2 : textattr := black + lightgray*16;
3 : textattr := white + lightgray*16;
end; { case }
clrscr;
end; { NewWindow }
procedure RandomChars;
begin
while not keypressed do begin
write(chr(random(256-32)+32));
end; { while }
while keypressed do { CLEAR KEYBOARD BUFFER }
while readkey=#0 do;
end; { RandomChars }
procedure RunWindows;
var
k : char;
InsertOn : boolean;
begin
InsertOn := false;
while true do begin
if InsertOn then Cursor(HalfCursor)
else Cursor(NormalCursor);
k := readkey;
case k of
_Extended : case readkey of
_Up : gotoxy(wherex,wherey-1);
_Down : gotoxy(wherex,wherey+1);
_Left : if wherex=1 then
gotoxy(lo(windmax)-lo(windmin)+1,wherey-1)
else
gotoxy(wherex-1,wherey);
_Right : if wherex=lo(windmax)-lo(windmin)+1 then
writeln
else
gotoxy(wherex+1,wherey);
_Home : gotoxy(1,wherey);
_End : gotoxy(lo(windmax)-lo(windmin)+1,wherey);
_PageUp : gotoxy(wherex,1);
_PageDown : gotoxy(wherex,hi(windmax)-hi(windmin)+1);
_Ctr : gotoxy((lo(windmax)-lo(windmin)+1) div 2,
(hi(windmax)-hi(windmin)+1) div 2);
_Ins : begin
InsertOn := not InsertOn;
if InsertOn then Cursor(HalfCursor)
else Cursor(NormalCursor);
end; { _Insert }
_Del : DelChar(1);
_AltW : NewWindow;
_AltR : RandomChars;
_CtrlDel : delline;
end; { case }
_Backspace : if wherex>1 then begin
gotoxy(wherex-1,wherey);
DelChar(1);
end; { if }
_Enter : begin
writeln;
if InsertOn then insline;
end; { _Enter }
_Escape : begin
if CanUseColor then textmode(co80);
textattr := lightgray + black*16;
clrscr;
writeln('Turbo Tools 1.0 * for Turbo Pascal * copyright 1989 * Chuck Esterbrook');
writeln('Crt2 DEMO TERMINATED BY USER');
writeln;
writeln;
writeln;
halt;
end; { _Escape }
#32..#254 : begin
if InsertOn then
InsSpace(1);
write(k);
end; { normal keys }
end; { case }
end; { while }
end; { RunWindows }
{ Crt2Demo }
begin
InitScr;
NewWindow;
RunWindows;
end. { Crt2Demo }